/**
 */
package flowchart.impl;

import flowchart.FlowChart;
import flowchart.FlowchartFactory;
import flowchart.FlowchartPackage;
import flowchart.MultipleConection;
import flowchart.SingleConection;
import flowchart.Step;
import flowchart.concurrency;
import flowchart.decision;
import flowchart.end;
import flowchart.inputoutput;
import flowchart.junction;
import flowchart.prepareDecision;
import flowchart.start;
import flowchart.subrutine;
import flowchart.symbols;

import flowchart.util.FlowchartValidator;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EValidator;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class FlowchartPackageImpl extends EPackageImpl implements FlowchartPackage {
	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass flowChartEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass symbolsEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass decisionEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass startEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass endEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass subrutineEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass prepareDecisionEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass stepEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass singleConectionEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass multipleConectionEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass junctionEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass concurrencyEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass inputoutputEClass = null;

	/**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see flowchart.FlowchartPackage#eNS_URI
   * @see #init()
   * @generated
   */
	private FlowchartPackageImpl() {
    super(eNS_URI, FlowchartFactory.eINSTANCE);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private static boolean isInited = false;

	/**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link FlowchartPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
	public static FlowchartPackage init() {
    if (isInited) return (FlowchartPackage)EPackage.Registry.INSTANCE.getEPackage(FlowchartPackage.eNS_URI);

    // Obtain or create and register package
    FlowchartPackageImpl theFlowchartPackage = (FlowchartPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FlowchartPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FlowchartPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theFlowchartPackage.createPackageContents();

    // Initialize created meta-data
    theFlowchartPackage.initializePackageContents();

    // Register package validator
    EValidator.Registry.INSTANCE.put
      (theFlowchartPackage, 
       new EValidator.Descriptor()
       {
         public EValidator getEValidator()
         {
           return FlowchartValidator.INSTANCE;
         }
       });

    // Mark meta-data to indicate it can't be changed
    theFlowchartPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(FlowchartPackage.eNS_URI, theFlowchartPackage);
    return theFlowchartPackage;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getFlowChart() {
    return flowChartEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getFlowChart_Symbols() {
    return (EReference)flowChartEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getFlowChart_Initial() {
    return (EReference)flowChartEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getFlowChart_End() {
    return (EReference)flowChartEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getsymbols() {
    return symbolsEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getdecision() {
    return decisionEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getdecision_Description() {
    return (EAttribute)decisionEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getstart() {
    return startEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getend() {
    return endEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getsubrutine() {
    return subrutineEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getsubrutine_Description() {
    return (EAttribute)subrutineEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getprepareDecision() {
    return prepareDecisionEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getprepareDecision_Description() {
    return (EAttribute)prepareDecisionEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getStep() {
    return stepEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getStep_Description() {
    return (EAttribute)stepEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getSingleConection() {
    return singleConectionEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getSingleConection_Arrow() {
    return (EReference)singleConectionEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getMultipleConection() {
    return multipleConectionEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getMultipleConection_Arrow() {
    return (EReference)multipleConectionEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getjunction() {
    return junctionEClass;
  }

	/**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getjunction_Description()
  {
    return (EAttribute)junctionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getconcurrency() {
    return concurrencyEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getinputoutput() {
    return inputoutputEClass;
  }

	/**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getinputoutput_Description()
  {
    return (EAttribute)inputoutputEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public FlowchartFactory getFlowchartFactory() {
    return (FlowchartFactory)getEFactoryInstance();
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private boolean isCreated = false;

	/**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public void createPackageContents() {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    flowChartEClass = createEClass(FLOW_CHART);
    createEReference(flowChartEClass, FLOW_CHART__SYMBOLS);
    createEReference(flowChartEClass, FLOW_CHART__INITIAL);
    createEReference(flowChartEClass, FLOW_CHART__END);

    symbolsEClass = createEClass(SYMBOLS);

    decisionEClass = createEClass(DECISION);
    createEAttribute(decisionEClass, DECISION__DESCRIPTION);

    startEClass = createEClass(START);

    endEClass = createEClass(END);

    subrutineEClass = createEClass(SUBRUTINE);
    createEAttribute(subrutineEClass, SUBRUTINE__DESCRIPTION);

    prepareDecisionEClass = createEClass(PREPARE_DECISION);
    createEAttribute(prepareDecisionEClass, PREPARE_DECISION__DESCRIPTION);

    stepEClass = createEClass(STEP);
    createEAttribute(stepEClass, STEP__DESCRIPTION);

    singleConectionEClass = createEClass(SINGLE_CONECTION);
    createEReference(singleConectionEClass, SINGLE_CONECTION__ARROW);

    multipleConectionEClass = createEClass(MULTIPLE_CONECTION);
    createEReference(multipleConectionEClass, MULTIPLE_CONECTION__ARROW);

    junctionEClass = createEClass(JUNCTION);
    createEAttribute(junctionEClass, JUNCTION__DESCRIPTION);

    concurrencyEClass = createEClass(CONCURRENCY);

    inputoutputEClass = createEClass(INPUTOUTPUT);
    createEAttribute(inputoutputEClass, INPUTOUTPUT__DESCRIPTION);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private boolean isInitialized = false;

	/**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public void initializePackageContents() {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    decisionEClass.getESuperTypes().add(this.getMultipleConection());
    startEClass.getESuperTypes().add(this.getSingleConection());
    endEClass.getESuperTypes().add(this.getSingleConection());
    subrutineEClass.getESuperTypes().add(this.getMultipleConection());
    prepareDecisionEClass.getESuperTypes().add(this.getSingleConection());
    stepEClass.getESuperTypes().add(this.getSingleConection());
    singleConectionEClass.getESuperTypes().add(this.getsymbols());
    multipleConectionEClass.getESuperTypes().add(this.getsymbols());
    junctionEClass.getESuperTypes().add(this.getSingleConection());
    concurrencyEClass.getESuperTypes().add(this.getMultipleConection());
    inputoutputEClass.getESuperTypes().add(this.getSingleConection());

    // Initialize classes and features; add operations and parameters
    initEClass(flowChartEClass, FlowChart.class, "FlowChart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getFlowChart_Symbols(), this.getsymbols(), null, "symbols", null, 0, -1, FlowChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getFlowChart_Initial(), this.getstart(), null, "initial", null, 1, 1, FlowChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getFlowChart_End(), this.getend(), null, "end", null, 1, 1, FlowChart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(symbolsEClass, symbols.class, "symbols", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(decisionEClass, decision.class, "decision", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getdecision_Description(), ecorePackage.getEString(), "description", null, 0, 1, decision.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(startEClass, start.class, "start", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(endEClass, end.class, "end", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(subrutineEClass, subrutine.class, "subrutine", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getsubrutine_Description(), ecorePackage.getEString(), "description", null, 0, 1, subrutine.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(prepareDecisionEClass, prepareDecision.class, "prepareDecision", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getprepareDecision_Description(), ecorePackage.getEString(), "description", null, 0, 1, prepareDecision.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(stepEClass, Step.class, "Step", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getStep_Description(), ecorePackage.getEString(), "description", null, 0, 1, Step.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(singleConectionEClass, SingleConection.class, "SingleConection", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSingleConection_Arrow(), this.getsymbols(), null, "arrow", null, 0, 1, SingleConection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(multipleConectionEClass, MultipleConection.class, "MultipleConection", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getMultipleConection_Arrow(), this.getsymbols(), null, "arrow", null, 0, -1, MultipleConection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(junctionEClass, junction.class, "junction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getjunction_Description(), ecorePackage.getEString(), "description", null, 0, 1, junction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(concurrencyEClass, concurrency.class, "concurrency", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(inputoutputEClass, inputoutput.class, "inputoutput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getinputoutput_Description(), ecorePackage.getEString(), "description", null, 0, 1, inputoutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Create resource
    createResource(eNS_URI);

    // Create annotations
    // http://www.eclipse.org/emf/2002/Ecore
    createEcoreAnnotations();
    // gmf
    createGmfAnnotations();
    // gmf.diagram
    createGmf_1Annotations();
    // gmf.node
    createGmf_2Annotations();
    // http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot
    createPivotAnnotations();
    // gmf.link
    createGmf_3Annotations();
  }

	/**
   * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createEcoreAnnotations() {
    String source = "http://www.eclipse.org/emf/2002/Ecore";		
    addAnnotation
      (this, 
       source, 
       new String[] 
       {
       "invocationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
       "settingDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
       "validationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"
       });									
    addAnnotation
      (prepareDecisionEClass, 
       source, 
       new String[] 
       {
       "constraints", "nextMustBeDecision nextMustBeDecision"
       });					
    addAnnotation
      (singleConectionEClass, 
       source, 
       new String[] 
       {
       "constraints", "uniqueStartStart noConectionArrowSingle noConectionArrowSingle uniqueStartStart"
       });					
    addAnnotation
      (multipleConectionEClass, 
       source, 
       new String[] 
       {
       "constraints", "uniqueStart noConectionArrow uniqueStart"
       });						
  }

	/**
   * Initializes the annotations for <b>gmf</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmfAnnotations()
  {
    String source = "gmf";			
    addAnnotation
      (this, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });			
    addAnnotation
      (symbolsEClass, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });												
    addAnnotation
      (singleConectionEClass, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });					
    addAnnotation
      (multipleConectionEClass, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });				
  }

  /**
   * Initializes the annotations for <b>gmf.diagram</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmf_1Annotations()
  {
    String source = "gmf.diagram";				
    addAnnotation
      (flowChartEClass, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });																				
  }

  /**
   * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createPivotAnnotations() {
    String source = "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot";											
    addAnnotation
      (prepareDecisionEClass, 
       source, 
       new String[] 
       {
       "nextMustBeDecision", "arrow->forAll(a : symbols | a.oclIsKindOf(decision))"
       });					
    addAnnotation
      (singleConectionEClass, 
       source, 
       new String[] 
       {
       "uniqueStartStart", "arrow->forAll(a : symbols | not a.oclIsKindOf(start))",
       "noConectionArrowSingle", "oclIsKindOf(end) implies arrow->isEmpty()"
       });					
    addAnnotation
      (multipleConectionEClass, 
       source, 
       new String[] 
       {
       "uniqueStart", "arrow->forAll(a : symbols | not a.oclIsKindOf(start))",
       "noConectionArrow", "not self.oclIsKindOf(end) implies self.arrow->notEmpty()"
       });					
  }

  /**
   * Initializes the annotations for <b>gmf.link</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmf_3Annotations()
  {
    String source = "gmf.link";																	
    addAnnotation
      (getSingleConection_Arrow(), 
       source, 
       new String[] 
       {
       "target.decoration", "arrow",
       "style", "solid"
       });					
    addAnnotation
      (getMultipleConection_Arrow(), 
       source, 
       new String[] 
       {
       "target.decoration", "arrow",
       "style", "solid"
       });			
  }

  /**
   * Initializes the annotations for <b>gmf.node</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmf_2Annotations()
  {
    String source = "gmf.node";						
    addAnnotation
      (decisionEClass, 
       source, 
       new String[] 
       {
       "label", "description",
       "figure", "polygon",
       "border.width", "2",
       "polygon.x", "5 30 55 30",
       "polygon.y", "30 5 30 55",
       "label.placement", "external",
       "size", "60,60"
       });		
    addAnnotation
      (startEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "figure", "ellipse",
       "border.width", "3",
       "border.style", "solid",
       "label.placement", "external",
       "size", "40,40"
       });		
    addAnnotation
      (endEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "figure", "ellipse",
       "border.width", "3",
       "border.style", "solid",
       "label.placement", "external",
       "size", "40,40"
       });		
    addAnnotation
      (subrutineEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "figure", "polygon",
       "border.width", "2",
       "polygon.x", "0 0 5 5 55 55 60 60 55 55 5 5",
       "polygon.y", "0 30 30 0 0 30 30 0 0 30 30 0",
       "label.placement", "external",
       "size", "50,30"
       });				
    addAnnotation
      (prepareDecisionEClass, 
       source, 
       new String[] 
       {
       "label", "name, description",
       "figure", "polygon",
       "polygon.x", "30 60 60 30 0 0",
       "polygon.y", "0 20 40 60 40 20",
       "border.width", "2",
       "label.placement", "external",
       "size", "60,60"
       });		
    addAnnotation
      (stepEClass, 
       source, 
       new String[] 
       {
       "label", "name, description",
       "figure", "rectangle",
       "border.width", "2",
       "label.placement", "external",
       "size", "50,30"
       });										
    addAnnotation
      (junctionEClass, 
       source, 
       new String[] 
       {
       "label", "name, description",
       "label.placement", "external",
       "figure", "ellipse",
       "border.width", "2",
       "color", "0,0,0",
       "polygon.x", "0 60 60 0 0 60 60 0",
       "polygon.y", "0 0 10 10 20 20 30 30",
       "size", "20,20"
       });		
    addAnnotation
      (concurrencyEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "label.placement", "external",
       "figure", "polygon",
       "border.width", "2",
       "color", "0,0,0",
       "polygon.x", "0 60 60 0 0 60 60 0",
       "polygon.y", "0 0 10 10 20 20 30 30",
       "size", "60,30"
       });		
    addAnnotation
      (inputoutputEClass, 
       source, 
       new String[] 
       {
       "label", "name, description",
       "figure", "polygon",
       "border.width", "2",
       "polygon.x", "5 20 60 45",
       "polygon.y", "50 0 0 50",
       "label.placement", "external",
       "size", "60,50"
       });
  }

} //FlowchartPackageImpl
